home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Games / gtetris / tetris.h < prev    next >
C/C++ Source or Header  |  1995-05-03  |  5KB  |  219 lines

  1. /*
  2. # GENERIC X-WINDOW-BASED TETRIS
  3. #
  4. #    tetris.h
  5. #
  6. ###
  7. #
  8. #  Copyright (C) 1992, 1993     Qiang Alex Zhao, azhao@cs.arizona.edu
  9. #        Computer Science Dept, University of Arizona
  10. #
  11. #            All Rights Reserved
  12. #
  13. #  Permission to use, copy, modify, and distribute this software and
  14. #  its documentation for any purpose and without fee is hereby granted,
  15. #  provided that the above copyright notice appear in all copies and
  16. #  that both that copyright notice and this permission notice appear in
  17. #  supporting documentation, and that the name of the author not be
  18. #  used in advertising or publicity pertaining to distribution of the
  19. #  software without specific, written prior permission.
  20. #
  21. #  This program is distributed in the hope that it will be "playable",
  22. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  23. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  24. #
  25. */
  26.  
  27. /*** Common headers ***/
  28.  
  29. #include    <stdio.h>
  30. #include    <math.h>
  31. #include    <pwd.h>
  32. #include    <errno.h>
  33.  
  34. #include    <X11/Xlib.h>
  35. #include    <X11/Xutil.h>
  36. #include    <X11/Xresource.h>
  37. #include    <X11/cursorfont.h>
  38. #include    <X11/keysym.h>
  39. #include    <X11/Xos.h>
  40. #include    <X11/Xfuncs.h>
  41. #include    <X11/Xfuncproto.h>
  42.  
  43. #ifndef    X_NOT_STDC_ENV
  44. #include    <stdlib.h>
  45. #else
  46. extern char    *getenv(
  47. #if    NeedFunctionPrototypes
  48.     char *
  49. #endif
  50. );
  51. #endif
  52.  
  53. #ifdef    X_NOT_POSIX
  54. extern int      getuid(
  55. #if    NeedFunctionPrototypes
  56.     void
  57. #endif
  58. );
  59. extern struct passwd *getpwuid(
  60. #if    NeedFunctionPrototypes
  61.     int
  62. #endif
  63. );
  64. #endif
  65.  
  66. #ifdef    _AIX
  67. #include    <sys/select.h>
  68. #endif
  69.  
  70. /*** for lseek ***/
  71.  
  72. #ifndef    SEEK_SET
  73. #define    SEEK_SET    L_SET
  74. #endif
  75.  
  76. #ifndef    SEEK_CUR
  77. #define    SEEK_CUR    L_INCR
  78. #endif
  79.  
  80. #ifndef    SEEK_END
  81. #define    SEEK_END    L_XTND
  82. #endif
  83.  
  84. /*** random generator ***/
  85.  
  86. #if    defined(HAS_48)        /* Use lrand48() and srand48() */
  87. #define    LRAND()        lrand48()
  88. #define    SRAND(X)    srand48((long) (X))
  89. extern long     lrand48(
  90. #if    NeedFunctionPrototypes
  91.     void
  92. #endif
  93. );
  94.  
  95. #else
  96. #if    defined(HAS_RANDOM)    /* Use random() and srandom() */
  97.  
  98. #define    LRAND()        random()
  99. #define    SRAND(X)    srandom((unsigned int) (X))
  100. extern long     random(
  101. #if    NeedFunctionPrototypes
  102.     void
  103. #endif
  104. );
  105.  
  106. #else                /* Use rand() and srand() */
  107.  
  108. #define    LRAND()        ((long) rand())
  109. #define    SRAND(X)    srand(X)
  110.  
  111. #endif
  112. #endif
  113.  
  114. /*** macros ***/
  115.  
  116. #define    ZLIM(X, Y)    (((int) X) < (Y) ? ((int) X) : (Y))
  117.  
  118. /*** constants ***/
  119.  
  120. #ifndef    SCOREFILE
  121. #define    SCOREFILE    "/usr/games/lib/tetris.scores"
  122. #endif
  123.  
  124. #define    BIGFONT        "12x24"
  125. #define    TINYFONT    "6x12"
  126. #define    BVOLUME        -90
  127. #define NUM_FLASHES    16
  128.  
  129. #define    MILLION        1000000
  130. #define    MAXSCORES    3
  131. #define    SHOWSCORES    15
  132. #define    NAMELEN        12
  133. #define    FILENAMELEN    1024
  134.  
  135. #define    MSG_PAUSED    "PAUSED"
  136. #define    MSG_END        "GAME OVER"
  137. #define    MSG_TITLE    "TETRIS"
  138. #define    MSG_AUTHOR    "by Qiang Alex Zhao"
  139.  
  140. #define    NUM_LEVELS    18
  141. #define    ROWS        20
  142. #define    COLS        10
  143.  
  144. #define    BOXSIZE        30
  145. #define    OFFSET        20
  146. #define    THINGSIZE    4
  147. #define    NUM_THINGS    7
  148. #define NUM_BITMAPS    15
  149.  
  150. /*** types ***/
  151.  
  152. typedef enum {FALL, DROP, ROTATE, LEFT, RIGHT} move_t;
  153.  
  154. typedef struct {
  155.     char            myname[NAMELEN], myhost[NAMELEN], mydate[27];
  156.     char            score[10];
  157.     char            level[4];
  158.     char            rows[5];
  159. }               score_t;
  160. #define    SCORESIZE    sizeof(score_t)
  161.  
  162. typedef struct {
  163.     int             map[THINGSIZE][THINGSIZE];
  164.     int             xpos, ypos;
  165.     int             size, px, py;
  166. }               thing_t;
  167.  
  168. /*** variables defined in "tetris.c" ***/
  169.  
  170. extern Display *display;
  171. extern int      screen_num;
  172. extern Visual  *visual;
  173. extern Bool     useColor;
  174. extern Colormap colormap;
  175. extern Window   mainWin, blockWin;
  176. extern Cursor   theCursor;
  177. extern XFontStruct *bigFont, *tinyFont;
  178. extern unsigned long fg, bg;
  179.  
  180. extern XSizeHints sizehints, iconsizehints;
  181. extern XWMHints wmhints;
  182.  
  183. extern char     myHome[FILENAMELEN];
  184. extern int      level, prefilled, score, rows;
  185. extern Bool     showNext, beep;
  186. extern score_t  myscore;
  187.  
  188. /*** variables defined in "utils.c" ***/
  189.  
  190. extern Atom     delw;
  191.  
  192. /*** variables defined in "playing.c" ***/
  193.  
  194. /*** functions ***/
  195.  
  196. extern unsigned long getColor();
  197. extern void     showScores();
  198. extern void     inits();
  199. extern void     playing();
  200. extern void     realTime();
  201. extern void     newThing();
  202. extern Bool     evGotNewThing();
  203. extern void     redrawAll();
  204. extern void     drawTitle();
  205. extern void     drawStatus();
  206. extern void     drawField();
  207. extern void     drawThing();
  208. extern void     drawThingDiff();
  209. extern void     drawNext();
  210. extern void     gameOver();
  211. extern void     banner();
  212. extern void     clearNext();
  213. extern void     putBox();
  214. extern void     tryMove();
  215. extern Bool     atBottom();
  216. extern Bool     overlapping();
  217. extern int      checkLines();
  218.  
  219.